An FPGA is an integrated circuit designed to be configured by a customer or a designer after manufacturing. The FPGA configuration is generally specified using a hardware description language (HDL), which is similar to the language used for an application-specific integrated circuit (ASIC). An FPGA contains an array of programmable logic blocks, and a hierarchy of reconfigurable interconnects that allow the blocks to be arranged in different configurations. The logic blocks can be configured to perform complex combinational functions or simple logic gates, like AND and XOR.
In addition to the programmable logic, an FPGA may include central processing units (CPU) to execute a variety of software stored on an external machine-readable medium. With its small size, CPUs, and programmable logic, an FPGA is an ideal device for executing tasks in an embedded environment. In some instances, the embedded environment may be used to perform tasks on sensitive data where maintaining the security of the data is a non-trivial concern. Thus, ensuring that the FPGA is operating in a secure manner is important to maintaining the security of the sensitive data.